package common

import (
	"net"
	"regexp"

	log "github.com/sirupsen/logrus"
)

var (
	WHOIS_SERVER = []string{"cn.whois-servers.net", "whois.internic.net"}
)

func Query(domain, whois_server string) ([]string, error) {
	conn, err := net.Dial("tcp", whois_server+":43")
	if err != nil {
		return nil, err
	}
	defer conn.Close()

	conn.Write([]byte(domain + "\r\n"))

	var buffer = make([]byte, 2048)

	n, err := conn.Read(buffer)
	if err != nil {
		return nil, err
	}

	re, err := regexp.Compile("(.*)Date(.*)")
	if err != nil {
		log.Panicf("compile正则失败, err: %v", err)
	}

	log.Printf("查询域名为：%s, 服务器为: %s", domain, whois_server)
	log.Println("开始使用第一种方式解析")
	parts := re.FindAllString(string(buffer[:n]), -1)

	if len(parts) == 0 {
		// 未查询到信息，或者使用的正则没有匹配成功
		log.Println("开始使用第二种方式解析")
		r, err2 := regexp.Compile("(.*)Time(.*)")
		if err2 != nil {
			log.Panicf("compile正则失败, err: %v", err)
		}
		s := r.FindAllString(string(buffer[:n]), -1)
		return s, nil
	}
	return parts, nil
}
